#ifndef _SE_DRIVER_H
#define _SE_DRIVER_H

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include "spi_driver.h"
#include "crc_calc.h"
#include "types.h"
#include "uart.h"

void recvInitData(unsigned char* pdata, unsigned char dataLen);
void app_select(u8_t NAD, u8_t PCB, u8_t* pdata, u8_t dataLen, u16_t* result);
void data_push(u8_t NAD, u8_t PCB, u8_t* pdata, u8_t dataLen, u16_t* result);
int digest_generate(u8_t NAD, u8_t PCB, const u8_t * content, u16_t content_len, u8_t *digest, u16_t digest_len) ;
void symmetricKeyPush(u8_t NAD, u8_t PCB, u8_t* key,  u8_t keyLen, u8_t identifier, u8_t dataBlock);
void encryptDecrypt(u8_t* data, u8_t dataLen, u8_t encryption);
void getRandrom(u8_t* getData, u8_t dataLen);
#endif